nethackfandomcom-20200214-history
Source:NetHack 3.0.0/obj.h
Below is the full text to obj.h from the source code of NetHack 3.0.0. To link to a particular line, write [[NetHack 3.0.0/obj.h#line123]], for example. Warning! This is the source code from an old release. For the latest release, see Source code 1. /* SCCS Id: @(#)obj.h 3.0 88/04/12 2. /* Copyright © Stichting Mathematisch Centrum, Amsterdam, 1985. */ 3. /* NetHack may be freely redistributed. See license for details. */ 4. 5. #ifndef OBJ_H 6. #define OBJ_H 7. 8. struct obj { 9. struct obj *nobj; 10. struct obj *cobj; /* id of container object is in */ 11. /* unsigned o_cwt; /* container weight capacity */ 12. unsigned o_id; 13. xchar ox,oy; 14. xchar odx,ody; 15. unsigned otyp; 16. unsigned owt; 17. unsigned quan; /* use oextra for tmp gold objects */ 18. 19. schar spe; /* quality of weapon, armor or ring (+ or -) 20. number of charges for wand ( >= -1 ) 21. marks your eggs, spinach tins, key shapes 22. indicates statues have spellbooks inside 23. tells which fruit a fruit is 24. special for uball and amulet %% BAH */ 25. #define N_LOX 10 /* # of key/lock shapes */ 26. char olet; 27. char invlet; 28. int corpsenm; /* type of corpse is monscorpsenm */ 29. #define leashmon corpsenm /* gets m_id of attached pet */ 30. Bitfield(oinvis,1); /* not yet implemented */ 31. Bitfield(olocked,1); /* object is locked */ 32. #define recharged olocked /* recharged once */ 33. Bitfield(otrapped,1); /* container is trapped */ 34. #define opoisoned otrapped /* weapon has been coated with poison */ 35. Bitfield(odispl,1); 36. Bitfield(known,1); /* exact nature known */ 37. Bitfield(dknown,1); /* color or text known */ 38. Bitfield(bknown,1); /* blessing or curse known */ 39. Bitfield(cursed,1); 40. Bitfield(blessed,1); 41. Bitfield(unpaid,1); /* on some bill */ 42. Bitfield(rustfree,1); 43. #define flameproof rustfree/* for non-metal armor items */ 44. Bitfield(no_charge,1); /* if shk shouldn't charge for this */ 45. Bitfield(onamelth,6); 46. long age; /* creation date */ 47. long owornmask; 48. #define W_ARM 040000L 49. #define W_ARMC 0100000L 50. #define W_ARMH 0200000L 51. #define W_ARMS 0400000L 52. #define W_ARMG 01000000L 53. #define W_ARMF 02000000L 54. #define W_AMUL 04000000L 55. #define W_TOOL 010000000L /* wearing another tool (see uprop) */ 56. #ifdef SHIRT 57. #define W_ARMU 020000000L 58. #define W_ARMOR (W_ARM | W_ARMC | W_ARMH | W_ARMS | W_ARMG | W_ARMF | W_ARMU) 59. #else 60. #define W_ARMOR (W_ARM | W_ARMC | W_ARMH | W_ARMS | W_ARMG | W_ARMF) 61. #endif 62. #define W_RINGL 010000L /* make W_RINGL = RING_LEFT (see uprop) */ 63. #define W_RINGR 020000L 64. #define W_RING (W_RINGL | W_RINGR) 65. #define W_WEP 01000L 66. #define W_BALL 02000L 67. #define W_CHAIN 04000L 68. long oextra1; /* used for name of ordinary objects - length 69. is flexible; amount for tmp gold objects */ 70. }; 71. 72. extern struct obj *fobj; 73. 74. #define newobj(xl) (struct obj *) alloc((unsigned)(xl) + sizeof(struct obj)) 75. #define ONAME(otmp) ((char *) otmp->oextra) 76. #define OGOLD(otmp) (otmp->oextra0) 77. 78. # ifndef STUPID_CPP /* otherwise these macros are functions in lock.c */ 79. #define Is_container(otmp) (otmp->otyp >= ICE_BOX && otmp->otyp <= BAG_OF_TRICKS) 80. #define Is_box(otmp) (otmp->otyp LARGE_BOX || otmp->otyp CHEST) 81. #define Is_mbag(otmp) (otmp->otyp BAG_OF_HOLDING || otmp->otyp BAG_OF_TRICKS) 82. 83. #define is_sword(otmp) (otmp->otyp >= SHORT_SWORD && otmp->otyp <= KATANA) 84. #define bimanual(otmp) (otmp->olet WEAPON_SYM && objectsotmp->otyp.oc_bimanual) 85. # endif /* STUPID_CPP */ 86. 87. #endif /* OBJ_H /**/ obj.h